package partThree;
/*本类用于测试泛型的优点2*/
public class TestGeneric2 {
    public static void main(String[] args) {
        //需求：打印下列数组中的所有元素
        Integer[] a = {1,2,3,4,5,6,7,8,9,10};
        print(a);

        String[] b = {"大哥","二哥","三哥","四哥","五哥","六哥","小弟",};
        print(b);

        Double[] c = {6.6,6.66,6.666,6.6666};
        print(c);
    }

    /*1.泛型可以实现更加通用高级的代码，使用E表示元素的类型是Element类型
    *   可以把这个理解成与多态相似，不管传入什么类型，都可以匹配的上
    * 2. 泛型方法的语法要求：如果在方法上使用泛型，必须俩处同时出现：
    *    一个是方法的参数列表中的参数类型，一个是返回值前的泛型类型<E>
         表示这是一个泛型的方法*/
    private static <E> void print(E[] e){
        for (E n : e){
            System.out.println(n);
        }
    }

//    private static void print(Integer[] a){
//        //遍历数组a，打印a数组所有元素到控制台
//        for (int i=0; i<a.length; i++){
//            System.out.println(a[i]);
//        }
//        /* 高效for循环--foreach循环：
//        *  语法：for(1 2 : 3){循环体}
//        * 1:本轮遍历到的数据类型  2：遍历到数据的名字  3：要遍历的数据
//        * 好处：比普通的for循环写法简单，效率比较高
//        * 坏处：没有办法按照下标操作值，只能从头到位的遍历数据*/
//        for (Integer n : a){
//            System.out.println(n);
//        }
//    }
//
//    private static void print(String[] b){
//        for (String n : b){
//            System.out.println(n);
//        }
//    }
//
//    private static void print(Double[] c){
//        for (Double n : c){
//            System.out.println(n);
//        }
//}
}